# -!- coding: utf-8 -!-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者：cacho_37967865
#博客：https://blog.csdn.net/sinat_37967865
#文件：ffmpeg_audio.py
#日期：2019-09-17
#备注：通过ffmpeg库处理音频信息处理实际遇到的问题
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

import ffmpeg
import os
from pycacho.cachobase.deal_json import dict_to_json

mp3_path = "F:\image\\16k.pcm"              # 1.mp3
outfile = "F:\image\\16k.pcm"


# 获取音频信息
def getInfo(file):
    info = ffmpeg.probe(file)
    dict_to_json(info)


def ff_play():
    os.system('ffplay.exe %s' % (mp3_path))         # 播放音频


# mp3格式转换为pcm格式
def mp3_pcm(file,outfile):
    # -acodec pcm_s16le：pcm_s16le 16bits 编码器
    # -f s16le 保存为16bits pcm格式
    # -ac 1 单声道
    #  -ar 16000  16000采样率
    os.system('ffmpeg -y -i %s -acodec pcm_s16le -f s16le -ac 1 -ar 16000 %s' % (file,outfile))


def get_audio(video_path, output_path):
    #os.system('ffmpeg -i %s -ss 0.0 -t 29.0 -y -acodec copy -vn %s' % (video_path, output_path))
    os.system('ffmpeg -i %s -y -acodec copy -vn %s' % (video_path, output_path))
    # 提取音频,只会为aac格式
    #os.system('ffmpeg -i %s -y -f mp3 -ab 128k -ar 44100 %s' % (video_path, output_path))     # 提取音频，可以设定声音格式
    #os.system('ffmpeg -i %s -y -ss 0.0 -t 210.0 -f mp3 -ab 128k -ar 44100 %s' % (video_path, output_path))      # 提取部分音频


def cut_audio(input_path,output_path):
    os.system('ffmpeg -i %s -y -ss 0.0 -t 131.0 -f mp3 -strict -2 %s' % (input_path, output_path))      # 截取部分音频


# 合并音频
def concat_audio(output_path):
    os.system('ffmpeg -i "concat:F:\image\\2.mp3|F:\image\\3.mp3|F:\image\\4.mp3|F:\image\\5.mp3"  -y %s' % (output_path))


# 调整声音音量
def adjust_sound(input_path, output_path):
    #os.system('ffmpeg -i %s -y -vol 256 %s' % (input_path, output_path))            # 它接受从0到256的整数值（只能降音量）
    os.system('ffmpeg -i %s -y -af volume=15dB %s' % (input_path, output_path))     # 增加10分贝的音量(不能增加太多)
    #os.system('ffmpeg -i %s -y -af volume=2/3 %s' % (input_path, output_path))       # 音量降低到三分之二，也可以增加=9/3


if __name__ == '__main__':
    name = '百岁之好-尾歌2.25.aac'
    input_path = 'F:\\alibaba\产品图片\Ceramic\Ceramic1+2.mp4'
    output_path = 'F:\image\\music\\Ceramic.aac'
    #getInfo(output_path)
    #getInfo('F:\image\\1.aac')
    #mp3_pcm(mp3_path,outfile)
    #concat_audio('F:\image\\out.mp3')
    #cut_audio(input_path, output_path)
    #get_audio('F:\image\\temp\\一言难尽.mp4', 'F:\image\\一言难尽.mp3')
    get_audio(input_path, output_path)